package cn.xu.bookstore.order.service;

import java.sql.SQLException;
import java.util.List;

import cn.itcast.jdbc.JdbcUtils;
import cn.xu.bookstore.order.dao.OrderDao;
import cn.xu.bookstore.order.domain.Order;
import cn.xu.bookstore.order.excepion.OrderException;

public class OrderService {
	private OrderDao orderDao = new OrderDao();

	/*
	 * 添加订单分两部分
	 * 订单一部分
	 * 订单条目一部分他们两者是紧密相连的
	 * 需提供事物的支持
	 */
	public void add(Order order) {
		
		try{
			JdbcUtils.beginTransaction();
			orderDao.addOrder(order);
			orderDao.addOrderItemList(order.getOrderItems());
			JdbcUtils.commitTransaction();
		}catch(Exception e){
			//回滚事物
			try {
				JdbcUtils.rollbackTransaction();
			} catch (SQLException e1) {
			}
			throw new RuntimeException();
		}
		
		
	}

	public List<Order> myOrders(String uid) {
		return orderDao.findByUid(uid);
	}

	public Order load(String oid) {
		
		return orderDao.findByOid(oid);
	}
	
	/*
	 * 查询订单状态判断它是否等于3
	 * 不等于3则 跑出异常
	 * 3:已发货 未收货
	 */
	public void  confirm(String oid)throws OrderException{
		int state = orderDao.getStateByOid(oid);
		
		if(state != 3){
			throw new OrderException("订单确认失败!");
		}
		
		/*
		 * 修改订单状态为4  则代表 交易成功
		 */
		orderDao.updateState(oid, 4);
	}

}
